using System.Collections;
using UnityEngine;
using UnityEngine.SceneManagement;
using UnityEngine.UI;

public class LoginManager : MonoBehaviour
{
    // 登录按钮引用
    public Button loginBtn;

    private void Start()
    {
        // 确保loginBtn不为null，如果为null则尝试查找
        if (loginBtn == null)
        {
            GameObject btnObject = GameObject.Find("LoginBtn");
            if (btnObject != null)
            {
                loginBtn = btnObject.GetComponent<Button>();
                if (loginBtn == null)
                {
                    Debug.LogError("LoginBtn对象没有Button组件");
                    return;
                }
            }
            else
            {
                Debug.LogError("未找到LoginBtn对象");
                return;
            }
        }

        // 添加点击事件监听器
        loginBtn.onClick.AddListener(OnLoginButtonClick);
        Debug.Log("LoginManager初始化完成，已添加点击事件监听器");
    }

    // 登录按钮点击事件处理函数
    private void OnLoginButtonClick()
    {
        Debug.Log("LoginBtn被点击，开始异步加载GameScene");
        StartCoroutine(LoadGameSceneAsync());
    }

    // 异步加载GameScene的协程
    private IEnumerator LoadGameSceneAsync()
    {
        // 开始异步加载GameScene
        AsyncOperation asyncOperation = SceneManager.LoadSceneAsync("GameScene");

        // 防止场景立即激活
        asyncOperation.allowSceneActivation = false;

        // 等待加载完成
        while (!asyncOperation.isDone)
        {
            // 可以在这里添加加载进度条的逻辑
            float progress = Mathf.Clamp01(asyncOperation.progress / 0.9f); // progress在0.9时表示加载完成
            Debug.Log("场景加载进度: " + (progress * 100f) + "%");

            // 当加载进度达到90%时，激活场景
            if (asyncOperation.progress >= 0.9f)
            {
                asyncOperation.allowSceneActivation = true;
            }

            yield return null;
        }

        Debug.Log("GameScene加载完成并激活");
    }

    private void OnDestroy()
    {
        // 清理点击事件监听器，防止内存泄漏
        if (loginBtn != null)
        {
            loginBtn.onClick.RemoveListener(OnLoginButtonClick);
        }
    }
}